// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLOrderingSpecification;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;

// import java.util.Collections;
// import java.util.List;
#pragma once
#include "MySqlExprImpl.h"
#include "MySqlExpr.h"
#include "../../../../ast/SQLReplaceable.h"

class MySqlOrderingExpr : virtual public MySqlExprImpl, virtual public MySqlExpr, virtual public SQLReplaceable
{
public:
  SQLExpr_ptr expr;
  SQLOrderingSpecification_ptr type;

  MySqlOrderingExpr();

  MySqlOrderingExpr(SQLExpr_ptr expr, SQLOrderingSpecification_ptr type);
  SHAREDOBJECT(MySqlOrderingExpr);

  SQLObject_ptr clone();

  // @Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  // @Override
  void accept0(MySqlASTVisitor_ptr mysqlVisitor);

  // @Override
  SQLObject_list_ptr getChildren();

  SQLExpr_ptr getExpr();

  void setExpr(SQLExpr_ptr expr);

  SQLOrderingSpecification_ptr getType();

  void setType(SQLOrderingSpecification_ptr type);

  // @Override
  bool equals(Object_ptr obj);

  // @Override
  int hashCode();
};
